home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / rkpls301.zip / RKPDEMO.ZIP / SAMPLE2.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-04  |  6KB  |  232 lines

  1. Program Sample2;
  2.  
  3. {
  4.  This is a demonstration program using RkPlus.
  5.  It uses 2 registration levels (0 and 1).
  6.  If a Level 1 key has expired, it will be treated as Level 0.
  7.  If a Level 0 key has expired, it will be treated as Unregistered.
  8.  This is a very simple program that doesn't actually do anything, but it
  9.  should demonstrate some of what can be done with RkPlus.
  10.  
  11.  It is identical to Sample1, except that it also contains a built-in
  12.  registration routine, instead of using an external registration program
  13.  (such as Register).  It uses the same keys as Sample1, which can be created
  14.  with the GenKey programme.
  15.  
  16.  Sample2 uses the example encoding unit Encode.
  17. }
  18.  
  19.  
  20. Uses
  21.   Crt,
  22.   RkPlus,
  23.   Encode;
  24.  
  25.  
  26. Const
  27.   MonthNames : Array[1..12] of String[3]
  28.   = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
  29.  
  30.  
  31. Var
  32.   kc  : Char;
  33.   lcv : Byte;
  34.  
  35.  
  36. Procedure BadRegBeep;
  37.  
  38. Begin
  39.   Sound(1200);
  40.   Delay(200);
  41.   Sound(600);
  42.   Delay(200);
  43.   Sound(1200);
  44.   Delay(200);
  45.   Sound(600);
  46.   Delay(200);
  47.   NoSound;
  48. End;
  49.  
  50.  
  51. Procedure NotRegBeep;
  52.  
  53. Begin
  54.   Sound(600);
  55.   Delay(200);
  56.   Sound(1200);
  57.   Delay(200);
  58.   NoSound;
  59. End;
  60.  
  61.  
  62. Procedure DoView;
  63.  
  64. Begin
  65.   WriteLn('Sample data :');
  66.   WriteLn;
  67.   WriteLn('4.465536  7.918270  0.118373  5.367233');
  68.   WriteLn('1.396349  4.868343  7.079323  4.783021');
  69.   WriteLn('3.947924  8.864673  8.846264  2.999999');
  70.   WriteLn('8.490832  6.874378  5.338329  3.729270');
  71.   WriteLn('6.839882  8.873478  6.750373  7.018948');
  72.   WriteLn('5.034784  3.003763  3.253290  4.892387');
  73.   WriteLn('3.874378  8.314159  9.880869  3.987842');
  74.   WriteLn('2.764947  9.265358  4.013002  9.903278');
  75. End;
  76.  
  77.  
  78. Procedure DoCalc;
  79.  
  80. Begin
  81.   If Rkp.Registered then Begin
  82.     Write('The calculated result is ');
  83.     WriteLn(4.465536+7.918270+0.118373+5.367233+1.396349+4.868343+7.079323+4.783021
  84.     +3.947924+8.864673+8.846264+2.999999+8.490832+6.874378+5.338329+3.729270
  85.     +6.839882+8.873478+6.750373+7.018948+5.034784+3.003763+3.253290+4.892387
  86.     +3.874378+8.314159+9.880869+3.987842+2.764947+9.265358+4.013002+9.903278);
  87.   End Else
  88.     WriteLn('Only available in registered version!');
  89. End;
  90.  
  91.  
  92. Procedure DoTest;
  93.  
  94. Begin
  95.   If Rkp.Registered then Begin
  96.     If (Rkp.Level > 0) then Begin
  97.       Write('Performing tests...');
  98.       Delay(300);
  99.       WriteLn;
  100.       WriteLn('All tests passed.');
  101.     End Else
  102.       WriteLn('Not available in demo version!');
  103.   End Else
  104.     WriteLn('Only available in registered version!');
  105. End;
  106.  
  107.  
  108. Procedure DoRegister;
  109.  
  110. Begin
  111.   Write('Enter name of person to register : ');
  112.   ReadLn(Rkp.Name1);
  113.   WriteLn;
  114.   Write('Enter the registration key : ');
  115.   ReadLn(Rkp.Key);
  116.   WriteLn;
  117.   Rkp.ID := '(c) Serious Cybernetics';
  118.   Rkp.Message := 'Sample2';
  119.   Rkp.Name2 := '';
  120.   Rkp.Name3 := '';
  121.   Rkp.Level := 0;
  122.   VerifyKey;
  123.   If Not Rkp.Registered then Begin
  124.     Rkp.Level := 1;
  125.     VerifyKey;
  126.   End;
  127.   If Not Rkp.Registered then
  128.     WriteLn('Invalid key!')
  129.   Else Begin
  130.     SaveRegInfo;
  131.     If RkpOK then
  132.       WriteLn(KeyFileName,' created.')
  133.     Else
  134.       WriteLn('Error ',RkpError,' creating file.');
  135.   End;
  136. End;
  137.  
  138.  
  139. Begin
  140.   If BadSystemDate then Begin
  141.     WriteLn('You must correctly set your system clock to run Sample2!');
  142.     BadRegBeep;
  143.     Halt(1);
  144.   End;
  145.   SetProgID('Sample');
  146.   SetKeyFile('Sample');
  147.   GetRegInfo;
  148.   Write('Sample2');
  149.   If Not RkpOK then
  150.     WriteLn(' [invalid]')
  151.   Else If Rkp.Registered and (Rkp.Level > 0) then
  152.     WriteLn(' [registered]')
  153.   Else If Rkp.Registered then
  154.     WriteLn(' [demo]')
  155.   Else
  156.     WriteLn(' [unregistered]');
  157.   WriteLn('Sample of RkPlus method 3 (with user-written encoding)');
  158.   WriteLn('See RKPLUS.DOC for more info');
  159.   WriteLn;
  160.   If (RkpError = InvalidFile) or (RkpError = InvalidKey) then Begin
  161.     WriteLn(KeyFileName,' has been altered!');
  162.     BadRegBeep;
  163.     Halt(1);
  164.   End Else If (RkpError = ExpiredKey) then Begin
  165.     If (Rkp.Level > 0) then Begin
  166.       WriteLn('Your registration key has expired!');
  167.       WriteLn('You will be given access at the DEMO level.');
  168.       NotRegBeep;
  169.       Rkp.Level := 0;
  170.     End Else Begin
  171.       WriteLn('Your demo key has expired!');
  172.       WriteLn('You will be given access at the UNREGISTERED level.');
  173.       NotRegBeep;
  174.       Rkp.Registered := False;
  175.     End;
  176.   End Else If Rkp.Registered then Begin
  177.     If (Rkp.Level > 0) then Begin
  178.       WriteLn('This version of Sample2 is registered to ',Rkp.Name1);
  179.       If (Rkp.ExpYear <> 0) and (Rkp.ExpMonth <> 0) then
  180.         WriteLn('This registration will expire ','1-',MonthNames[Rkp.ExpMonth],'-',Rkp.ExpYear,'.');
  181.       WriteLn('Thank you for registering!');
  182.     End Else Begin
  183.       WriteLn('This version of Sample2 is a limited use demo for ',Rkp.Name1);
  184.       If (Rkp.ExpYear <> 0) and (Rkp.ExpMonth <> 0) then
  185.         WriteLn('This demo will expire ','1-',MonthNames[Rkp.ExpMonth],'-',Rkp.ExpYear,'.');
  186.       WriteLn('Don''t forget to register!');
  187.     End;
  188.   End Else If Not RkpOK then Begin
  189.     WriteLn('Unexpected error ',RkpError,'!');
  190.     Halt(255);
  191.   End Else Begin
  192.     WriteLn('This version of Sample2 is unregistered.');
  193.     WriteLn('Contact TrendSoft, Inc. to register or obtain a limited use Sample key.');
  194.     NotRegBeep;
  195.     Delay(500);
  196.   End;
  197.   WriteLn;
  198.   WriteLn('Sample2 Menu');
  199.   WriteLn;
  200.   WriteLn('[V]iew sample data');
  201.   Write('[C]alculate');
  202.   If Not Rkp.Registered then
  203.     WriteLn('  (only available in registered version)')
  204.   Else
  205.     WriteLn;
  206.   Write('[T]est results');
  207.   If Not Rkp.Registered then
  208.     WriteLn('  (only available in registered version)')
  209.   Else If (Rkp.Level <= 0) then
  210.     WriteLn('  (not available in demo version)')
  211.   Else
  212.     WriteLn;
  213.   WriteLn('[R]egister');
  214.   WriteLn;
  215.   Write('Selection : ');
  216.   kc := UpCase(ReadKey);
  217.   WriteLn;
  218.   WriteLn;
  219.   Case kc of
  220.   'V' :
  221.     DoView;
  222.   'C' :
  223.     DoCalc;
  224.   'T' :
  225.     DoTest;
  226.   'R' :
  227.     DoRegister;
  228.   Else
  229.     WriteLn('Invalid selection!');
  230.   End;
  231. End.
  232.